home *** CD-ROM | disk | FTP | other *** search
/ Enter 2002 August / EnterCD 8_2002.iso / Internet / Adobe GoLive 6.0 / data1.cab / PF_AppDir_Mod_ExtendScripts_WMLExt / check.js next >
Encoding:
JavaScript  |  2002-03-28  |  6.0 KB  |  274 lines

  1. //------------------------------------------------------------------------------
  2. //
  3. // ADOBE SYSTEMS INCORPORATED
  4. // Copyright 2000-2002 Adobe Systems Incorporated 
  5. // All Rights Reserved
  6. //
  7. // NOTICE: Adobe permits you to use, modify, and distribute 
  8. // this file in accordance with the terms of the Adobe license 
  9. // agreement accompanying it. If you have received this file 
  10. // from a source other than Adobe, then your use, modification, 
  11. // or distribution of it requires the prior written permission 
  12. // of Adobe.
  13. //
  14. //------------------------------------------------------------------------------
  15.  
  16.  
  17. function checkPositionForAnchorAndA(element, version)
  18. {
  19.     var parName = element.parent.tagName;
  20.     switch (parName) {
  21.     case "fieldset":
  22.     case "p":
  23.     case "strong":
  24.     case "em":
  25.     case "b":
  26.     case "i":
  27.     case "u":
  28.     case "td":
  29.     case "big":
  30.     case "small":
  31.         return 0;
  32.     case "pre":
  33.         if (version == "1.1")
  34.             return c_parentWrong;
  35.         else
  36.             return 0;
  37.     default:
  38.         return c_parentWrong;
  39.     }
  40. }
  41.  
  42. function checkPositionForCard(element)
  43. {
  44.     var parName = element.parent.tagName;
  45.     
  46.     if (parName != "wml")
  47.         return c_parentWrong;
  48.     
  49.     var prevElt = getPreviousElementName(element);
  50.  
  51.     if ((prevElt == "") || (prevElt == "card") || (prevElt == "template")) 
  52.         return 0; // no errors
  53.     else 
  54.         return c_previousWrong;
  55. }
  56.     
  57. function checkPositionForDo(element, version)
  58. {
  59.     var parName = element.parent.tagName;
  60.     
  61.     // do may occur anywhere in card, template,
  62.     // fieldset, p, or pre
  63.     switch (parName) {
  64.     case "card":
  65.     case "template":
  66.     case "fieldset":
  67.     case "p":
  68.         return 0;
  69.     case "pre":
  70.         if (version == "1.1") 
  71.             return c_parentWrong;
  72.         else 
  73.             return 0;
  74.     default:
  75.         return c_parentWrong;
  76.     }
  77. }
  78.  
  79. function checkPositionForFieldset(element)
  80. {
  81.     var parName = element.parent.tagName;
  82.     if ((parName != "fieldset") && (parName != "p"))
  83.         return c_positionWrong;
  84.     return 0;
  85. }
  86.  
  87. function checkPositionForImg(element)
  88. {
  89.     var parName = element.parent.tagName;
  90.     switch (parName) {
  91.     case "p":
  92.     case "fieldset":
  93.     case "anchor":
  94.     case "a":
  95.     case "td":
  96.     case "em":
  97.     case "strong":
  98.     case "b":
  99.     case "i":
  100.     case "u":
  101.     case "big":
  102.     case "small":
  103.         return 0;
  104.     default:
  105.         return c_parentWrong;
  106.     }
  107. }
  108.  
  109. function checkPositionForGoPrevAndRefresh(element) 
  110. {
  111.     var parName = element.parent.tagName;
  112.     if ((parName != "do") && (parName != "onevent") &&
  113.         (parName != "anchor"))
  114.         return c_parentWrong;
  115.     
  116.     if ((parName == "do") || (parName == "onevent")) {
  117.         var prevElt = getPreviousElementName(element);
  118.         if (prevElt != "") // must be first and only
  119.             return c_previousWrong;
  120.     }
  121.     return 0;
  122. }
  123.  
  124. function checkPositionForInputAndSelect(element, version) 
  125. {
  126.     var parName = element.parent.tagName;
  127.     if ((version == "1.1") && (parName != "fieldset") && (parName != "p"))
  128.         return c_parentWrong;
  129.     else if ((parName != "fieldset") && (parName != "p") && (parName != "pre"))
  130.         return c_parentWrong;        
  131.     return 0;
  132. }
  133.  
  134. function checkPositionForNoop(element) 
  135. {
  136.     var parName = element.parent.tagName;
  137.     if ((parName != "do") && (parName != "onevent"))
  138.         return c_parentWrong;
  139.     
  140.     var prevElt = getPreviousElementName(element);
  141.     if (prevElt != "") // must be first and only
  142.         return c_previousWrong;
  143.         
  144.     return 0;
  145. }
  146.  
  147. function checkPositionForOnevent(element)
  148. {
  149.     var parName = element.parent.tagName;
  150.     if ((parName != "card") && (parName != "template") &&
  151.         (parName != "option"))
  152.             return c_parentWrong;
  153.             
  154.     if (parName == "card") {
  155.         // check that it's first
  156.         var prevElt = getPreviousElementName(element);
  157.         if ((prevElt != "") && (prevElt != "onevent"))
  158.             return c_previousWrong;
  159.     }
  160.     return 0;
  161. }
  162.  
  163. function checkPositionForOption(element)
  164. {
  165.     var parName = element.parent.tagName;
  166.     if ((parName != "select") && (parName != "optgroup"))
  167.         return c_parentWrong;
  168.     // can occur anywhere inside select or optgroup
  169.     return 0;
  170. }
  171.  
  172. function checkPositionForOptgroup(element)
  173. {
  174.     var parName = element.parent.tagName;
  175.     if (parName != "select")
  176.         return c_parentWrong;
  177.     return 0;
  178. }
  179.  
  180. function checkPositionForPostfield(element)
  181. {
  182.     var parName = element.parent.tagName;
  183.     if (parName != "go")
  184.         return c_parentWrong;
  185.         
  186.     return 0; // can occur anywhere inside go
  187. }
  188.  
  189. function checkPositionForPre(element, version)
  190. {
  191.     if (version == "1.1")
  192.         return c_versionWrong;
  193.         
  194.     var parName = element.parent.tagName;
  195.     if (parName != "card")
  196.         return c_parentWrong;
  197.         
  198.     // Onevent*, Timer?, (Do | P | Pre)*
  199.     var prevElt = getPreviousElementName(element);
  200.     switch (prevElt) {
  201.     case "":
  202.     case "do":
  203.     case "p":
  204.     case "pre":
  205.     case "timer":
  206.     case "onevent":
  207.         return 0;
  208.     default:
  209.         return c_previousWrong;
  210.     }
  211. }
  212.  
  213. function checkPositionForSetvar(element)
  214. {
  215.     var parName = element.parent.tagName;
  216.     if ((parName != "go") && (parName != "prev") &&
  217.         (parName != "refresh"))
  218.         return c_parentWrong;
  219.         
  220.     // can go anywhere inside go, prev or refresh
  221.     return 0;
  222. }
  223.  
  224. function checkPositionForTemplate(element)
  225. {
  226.     var parName = element.parent.tagName;
  227.     var i; // misc value
  228.     
  229.     //parents: wml                        
  230.     if (parName != "wml") 
  231.         return c_parentWrong;
  232.         
  233.     var prevElt = getPreviousElementName(element);
  234.     if (prevElt == "") // first element
  235.         return 0;
  236.     else 
  237.         return c_previousWrong;
  238.                 
  239. }
  240.  
  241. function checkPositionForTimer(element)
  242. {
  243.     var parName = element.parent.tagName;
  244.     if (parName != "card")
  245.         return c_parentWrong;
  246.     
  247.     var prevElt = getPreviousElementName(element);
  248.     if ((prevElt == "") || (prevElt == "onevent"))
  249.         return 0;
  250.     return c_previousWrong;
  251.     
  252. }
  253.  
  254.  
  255. //----------------------------------------------------
  256. // return empty string if element is first
  257.  
  258. function getPreviousElementName(theElt)
  259. {
  260.     var parEl = theElt.parent;
  261.     for (var i = 0; i < parEl.subElements.length; i++) {
  262.         if (parEl.subElements[i] == theElt) {
  263.             if (i == 0) 
  264.                 return ""; // first element
  265.         
  266.             for (var j = i; j > 0; j--) {
  267.                 if (parEl.subElements[j-1].elementType != "comment")
  268.                     return parEl.subElements[j-1].tagName;
  269.             }    
  270.             return ""; // first element 
  271.         }            
  272.     }
  273.     return; // error returns undefined
  274. }